home *** CD-ROM | disk | FTP | other *** search
- <?xml version="1.0"?>
- <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
- <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
- <!-- $Revision: 1.8.2.7 $ -->
-
- <!--
- Copyright 2002-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
- <modulesynopsis metafile="prefork.xml.meta">
-
- <name>prefork</name>
- <description>Implements a non-threaded, pre-forking web server</description>
- <status>MPM</status>
- <sourcefile>prefork.c</sourcefile>
- <identifier>mpm_prefork_module</identifier>
-
- <summary>
- <p>This Multi-Processing Module (MPM) implements a non-threaded,
- pre-forking web server that handles requests in a manner similar
- to Apache 1.3. It is appropriate for sites that need to avoid
- threading for compatibility with non-thread-safe libraries. It
- is also the best MPM for isolating each request, so that a problem
- with a single request will not affect any other.</p>
-
- <p>This MPM is very self-regulating, so it is rarely necessary to
- adjust its configuration directives. Most important is that
- <directive module="mpm_common">MaxClients</directive> be big enough to
- handle as many simultaneous requests as you expect to receive, but
- small enough to assure that there is enough physical RAM for all
- processes.</p>
- </summary>
- <seealso><a href="../bind.html">Setting which addresses and ports Apache
- uses</a></seealso>
-
- <section id="how-it-works"><title>How it Works</title>
- <p>A single control process is responsible for launching child
- processes which listen for connections and serve them when they
- arrive. Apache always tries to maintain several <dfn>spare</dfn>
- or idle server processes, which stand ready to serve incoming
- requests. In this way, clients do not need to wait for a new
- child processes to be forked before their requests can be
- served.</p>
-
- <p>The <directive module="mpm_common">StartServers</directive>,
- <directive module="prefork">MinSpareServers</directive>,
- <directive module="prefork">MaxSpareServers</directive>, and
- <directive module="mpm_common">MaxClients</directive> regulate how
- the parent process creates children to serve requests. In general,
- Apache is very self-regulating, so most sites do not need to
- adjust these directives from their default values. Sites which
- need to serve more than 256 simultaneous requests may need to
- increase <directive module="mpm_common">MaxClients</directive>,
- while sites with limited memory may need to decrease <directive
- module="mpm_common">MaxClients</directive> to keep the server from
- thrashing (swapping memory to disk and back). More information
- about tuning process creation is provided in the <a
- href="../misc/perf-tuning.html">performance hints</a>
- documentation.</p>
-
- <p>While the parent process is usually started as <code>root</code>
- under Unix in order to bind to port 80, the child processes are
- launched by Apache as a less-privileged user. The <directive
- module="mpm_common">User</directive> and <directive
- module="mpm_common">Group</directive> directives are used to set
- the privileges of the Apache child processes. The child processes
- must be able to read all the content that will be served, but
- should have as few privileges beyond that as possible.</p>
-
- <p><directive module="mpm_common">MaxRequestsPerChild</directive>
- controls how frequently the server recycles processes by killing
- old ones and launching new ones.</p>
- </section>
-
- <directivesynopsis location="mpm_common"><name>BS2000Account</name>
- </directivesynopsis>
- <directivesynopsis location="mpm_common"><name>CoreDumpDirectory</name>
- </directivesynopsis>
- <directivesynopsis location="mpm_common"><name>EnableExceptionHook</name>
- </directivesynopsis>
- <directivesynopsis location="mpm_common"><name>PidFile</name>
- </directivesynopsis>
- <directivesynopsis location="mpm_common"><name>Listen</name>
- </directivesynopsis>
- <directivesynopsis location="mpm_common"><name>ListenBacklog</name>
- </directivesynopsis>
- <directivesynopsis location="mpm_common"><name>LockFile</name>
- </directivesynopsis>
- <directivesynopsis location="mpm_common"><name>MaxClients</name>
- </directivesynopsis>
- <directivesynopsis location="mpm_common"><name>MaxMemFree</name>
- </directivesynopsis>
- <directivesynopsis location="mpm_common"><name>MaxRequestsPerChild</name>
- </directivesynopsis>
- <directivesynopsis location="mpm_common"><name>ScoreBoardFile</name>
- </directivesynopsis>
- <directivesynopsis location="mpm_common"><name>SendBufferSize</name>
- </directivesynopsis>
- <directivesynopsis location="mpm_common"><name>ServerLimit</name>
- </directivesynopsis>
- <directivesynopsis location="mpm_common"><name>StartServers</name>
- </directivesynopsis>
- <directivesynopsis location="mpm_common"><name>User</name>
- </directivesynopsis>
- <directivesynopsis location="mpm_common"><name>Group</name>
- </directivesynopsis>
- <directivesynopsis location="mpm_common"><name>AcceptMutex</name>
- </directivesynopsis>
-
- <directivesynopsis>
- <name>MaxSpareServers</name>
- <description>Maximum number of idle child server processes</description>
- <syntax>MaxSpareServers <var>number</var></syntax>
- <default>MaxSpareServers 10</default>
- <contextlist><context>server config</context></contextlist>
-
- <usage>
- <p>The <directive>MaxSpareServers</directive> directive sets the
- desired maximum number of <em>idle</em> child server processes. An
- idle process is one which is not handling a request. If there are
- more than <directive>MaxSpareServers</directive> idle, then the
- parent process will kill off the excess processes.</p>
-
- <p>Tuning of this parameter should only be necessary on very
- busy sites. Setting this parameter to a large number is almost
- always a bad idea. If you are trying to set the value lower than
- <directive module="prefork">MinSpareServers</directive>, Apache
- will automatically adjust it to <directive
- >MinSpareServers</directive><code> + 1</code>.</p>
- </usage>
- <seealso><directive module="prefork">MinSpareServers</directive></seealso>
- <seealso><directive module="mpm_common">StartServers</directive></seealso>
- </directivesynopsis>
-
- <directivesynopsis>
- <name>MinSpareServers</name>
- <description>Minimum number of idle child server processes</description>
- <syntax>MinSpareServers <var>number</var></syntax>
- <default>MinSpareServers 5</default>
- <contextlist><context>server config</context></contextlist>
-
- <usage>
- <p>The <directive>MinSpareServers</directive> directive sets the
- desired minimum number of <em>idle</em> child server processes. An
- idle process is one which is not handling a request. If there are
- fewer than <directive>MinSpareServers</directive> idle, then the parent
- process creates new children at a maximum rate of 1 per second.</p>
-
- <p>Tuning of this parameter should only be necessary on very
- busy sites. Setting this parameter to a large number is almost
- always a bad idea.</p>
- </usage>
- <seealso><directive module="prefork">MaxSpareServers</directive></seealso>
- <seealso><directive module="mpm_common">StartServers</directive></seealso>
- </directivesynopsis>
-
- </modulesynopsis>
-
-